package edu.hubu.work01.Service.impl;

import cn.hutool.crypto.digest.DigestUtil;
import edu.hubu.work01.entity.User;
import edu.hubu.work01.mapper.UserMapper;
import edu.hubu.work01.Service.UserService;
import edu.hubu.work01.vo.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    //在Service业务类中注入一个 UserMapper 对象
    @Autowired
    private UserMapper userMapper;

    @Override
    public ResultVO checkAccount(String account) {
//编写业务代码
//1.调用UserMapper中的 selectByAccount 方法 根据account参数查询用户信息
        User user = userMapper.selectByAccount(account);
//2.判断查询结果、封装验证结果
        if (user != null) {
            return new ResultVO(500, "账号不可用", account);
        } else {
            return new ResultVO(200, "账号可用", account);
        }
    }

    @Override
    public ResultVO saveUser(User user) {
        //编写业务代码
        //1.将user对象中的密码取出来进行md5加密，然后将加密后的密码再设置到user对象
        // 使用hutool包中的工具类对密码进行加密（需要在项目中引入hutool工具包：）
        String loginPwd = user.getLoginPwd(); //明文 123456
        String newPwd = DigestUtil.md5Hex(loginPwd); //密文
        user.setLoginPwd(newPwd);
            //2.调用UserMapper接口中的insertUser方法 保存用户
        int i = userMapper.insertUser(user);
        if (i > 0) {
            return new ResultVO(200, "注册成功！", null);
        } else {
            return new ResultVO(500, "注册失败！", null);
        }
    }


    public ResultVO cherkAccountPwd(String account,String pwd){

        User user = userMapper.selectByAccount(account);
        if (user == null) {
            return new ResultVO(500, "账号错误", null);
        }

        String newPwd = DigestUtil.md5Hex(pwd);
        String dbPwd = user.getLoginPwd();
        if (newPwd.equals(dbPwd)) {
            user.setLoginPwd("********");
            return new ResultVO(200, "登录成功", user);
        } else {
            return new ResultVO(500, "登录失败", null);
        }
    }
}